Bag of Words (BoW) এবং TF-IDF (Term Frequency - Inverse Document Frequency) হল প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) এবং টেক্সট মাইনিংয়ের দুটি গুরুত্বপূর্ণ টেকনিক, যা টেক্সট ডেটাকে গাণিতিকভাবে উপস্থাপন করার জন্য ব্যবহৃত হয়। এই পদ্ধতিগুলি টেক্সট ডেটা থেকে বৈশিষ্ট্য বের করার জন্য ব্যবহৃত হয় এবং মেশিন লার্নিং মডেল প্রশিক্ষণের জন্য সাহায্য করে।
১. Bag of Words (BoW)
Bag of Words (BoW) একটি সিম্পল টেক্সট রিপ্রেজেন্টেশন পদ্ধতি, যেখানে একটি কপাল একযোগে টোকেন (বা শব্দ) কে একটি ডকুমেন্টের বৈশিষ্ট্য হিসেবে গণ্য করা হয়। এখানে শব্দের কোন নির্দিষ্ট অর্ডার বা গ্রামার কনসেপ্ট থাকে না। শুধুমাত্র শব্দের উপস্থিতি এবং তাদের ফ্রিকোয়েন্সি গুরুত্বপূর্ণ।
মূল বৈশিষ্ট্য:
- শব্দের উপস্থিতি: BoW কেবলমাত্র ডকুমেন্টে একটি শব্দ উপস্থিত আছে কিনা তা নিয়ে কাজ করে।
- শব্দের ফ্রিকোয়েন্সি: প্রতিটি শব্দের কতবার উপস্থিতি আছে তা হিসাব করা হয়।
পদ্ধতি:
- Vocabulary Creation: সমস্ত ডকুমেন্ট থেকে একটি ভোক্যাবুলারি তৈরি করা হয়, অর্থাৎ সমস্ত একক শব্দের একটি তালিকা।
- Vectorization: প্রতিটি ডকুমেন্টের জন্য একটি ভেক্টর তৈরি করা হয়, যেখানে প্রতিটি শব্দের ফ্রিকোয়েন্সি হিসাব করা হয়।
উদাহরণ:
ধরা যাক, আমাদের দুটি ডকুমেন্ট রয়েছে:
- ডকুমেন্ট 1: "I love programming"
- ডকুমেন্ট 2: "Programming is fun"
ভোক্যাবুলারি তৈরি হবে: ["I", "love", "programming", "is", "fun"]
এখন, BoW ভেক্টর:
- ডকুমেন্ট 1: [1, 1, 1, 0, 0] (I - 1, love - 1, programming - 1, is - 0, fun - 0)
- ডকুমেন্ট 2: [0, 0, 1, 1, 1] (I - 0, love - 0, programming - 1, is - 1, fun - 1)
কোড উদাহরণ (Python):
from sklearn.feature_extraction.text import CountVectorizer
# ডকুমেন্টগুলো
documents = ["I love programming", "Programming is fun"]
# BoW ভেক্টর তৈরি
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(documents)
# ভোক্যাবুলারি এবং ভেক্টর আউটপুট
print("Vocabulary:", vectorizer.get_feature_names_out())
print("Bag of Words Vectors:\n", X.toarray())
২. TF-IDF (Term Frequency - Inverse Document Frequency)
TF-IDF হল আরও উন্নত একটি টেকনিক যা Bag of Words এর থেকে বেশি কার্যকরী। এটি শব্দের গুরুত্ব নির্ধারণ করতে ব্যবহৃত হয়, যেখানে Term Frequency (TF) একটি শব্দের উপস্থিতির সংখ্যা এবং Inverse Document Frequency (IDF) সেই শব্দটির গুরুত্বের বিপরীত পরিমাপ।
Formula:
- Term Frequency (TF):
- Inverse Document Frequency (IDF):
- TF-IDF:
বৈশিষ্ট্য:
- Term Frequency (TF): শব্দটির একটি ডকুমেন্টে কতবার উপস্থিত তা দেখায়।
- Inverse Document Frequency (IDF): শব্দটি সমস্ত ডকুমেন্টে কম উপস্থিত হলে তার গুরুত্ব বাড়ায়।
উদাহরণ:
ধরা যাক, 3টি ডকুমেন্টের মধ্যে একটি শব্দের ফ্রিকোয়েন্সি হিসাব করা:
- ডকুমেন্ট 1: "I love programming"
- ডকুমেন্ট 2: "Programming is fun"
- ডকুমেন্ট 3: "Python programming is great"
TF-IDF-এর মাধ্যমে, "programming" শব্দটি ডকুমেন্ট 3 এ অন্য শব্দগুলোর তুলনায় বেশি গুরুত্বপূর্ণ হবে, কারণ এটি এখানে অন্যান্য ডকুমেন্টগুলির তুলনায় বেশি সাধারণ।
কোড উদাহরণ (Python):
from sklearn.feature_extraction.text import TfidfVectorizer
# ডকুমেন্টগুলো
documents = ["I love programming", "Programming is fun", "Python programming is great"]
# TF-IDF ভেক্টর তৈরি
tfidf_vectorizer = TfidfVectorizer()
X = tfidf_vectorizer.fit_transform(documents)
# ভোক্যাবুলারি এবং TF-IDF আউটপুট
print("Vocabulary:", tfidf_vectorizer.get_feature_names_out())
print("TF-IDF Vectors:\n", X.toarray())
Bag of Words এবং TF-IDF এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | Bag of Words | TF-IDF |
|---|---|---|
| প্রতিষ্ঠান | শব্দের উপস্থিতি এবং ফ্রিকোয়েন্সি | শব্দের গুরুত্বের সাথে ফ্রিকোয়েন্সি নির্ধারণ |
| ফোকাস | শব্দের উপস্থিতি | শব্দের গুরুত্বপূর্ণতা |
| পদার্থ | শুধুমাত্র শব্দের গুনফল | গুনফল এবং বিপরীত ডকুমেন্ট ফ্রিকোয়েন্সি |
| পদ্ধতি | সাধারন শব্দের মাপকাঠি | গুরুত্ব নির্ধারণ |
| ইউজেস | সাধারণ মডেলিং কাজে ব্যবহৃত | শব্দের গুরুত্ব বিশ্লেষণের জন্য ব্যবহৃত |
সারাংশ
- Bag of Words (BoW) একটি সাদামাটা এবং সহজ টেক্সট রেপ্রেজেন্টেশন পদ্ধতি, যেখানে শুধুমাত্র শব্দের উপস্থিতি এবং ফ্রিকোয়েন্সি গোনা হয়।
- TF-IDF একটি উন্নত পদ্ধতি, যা শব্দের গুরুত্ব এবং ফ্রিকোয়েন্সির সমন্বয়ে ডেটাকে গাণিতিকভাবে উপস্থাপন করে। এটি বিশেষত কমন শব্দগুলির তুলনায় গুরুত্বপূর্ণ শব্দগুলি আরও বেশি গুরুত্ব প্রদান করে।
এই দুটি পদ্ধতি মেশিন লার্নিং মডেল এবং টেক্সট বিশ্লেষণের জন্য গুরুত্বপূর্ণ ভূমিকা পালন করে, বিশেষ করে যখন টেক্সট ডেটাকে গাণিতিকভাবে পরিমাপ করতে হয়।
Read more